import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 读取数据文件
file_path = '附件一（训练集）.xlsx'
data = pd.read_excel(file_path)

# 提取第二列（频率）和第三列（磁芯损耗）
frequency = data.iloc[:, 1]
core_loss = data.iloc[:, 2]
#比赛结束前最后一天售后群发布无水印可视化结果+无标注代码【可直接提交】为了防止倒卖， 论文写作过程中遗留数个致命问题，无关代码，该问题解决方式仅在官网授权售后群答疑，盗卖方式购买资料不提供答疑，感谢理解2024年研赛资料助攻购买链接+说明https://docs.qq.com/doc/p/e03d6bffc00b392932b7dc1fbcf746ef9b086a8a
## 描述性统计分析
freq_desc = frequency.describe()
core_loss_desc = core_loss.describe()

print("--- Frequency 描述性统计 ---")
print(freq_desc)
print("\n--- Core Loss 描述性统计 ---")
print(core_loss_desc)

## 绘制描述性统计的可视化

# 1. 箱线图 (Boxplot) 用于频率和磁芯损耗
plt.figure(figsize=(12, 6))

# 频率的箱线图
plt.subplot(1, 2, 1)
sns.boxplot(y=frequency)
plt.title('Frequency Boxplot')
plt.ylabel('Frequency')

# 磁芯损耗的箱线图
plt.subplot(1, 2, 2)
sns.boxplot(y=core_loss)
plt.title('Core Loss Boxplot')
plt.ylabel('Core Loss')
#比赛结束前最后一天售后群发布无水印可视化结果+无标注代码【可直接提交】为了防止倒卖， 论文写作过程中遗留数个致命问题，无关代码，该问题解决方式仅在官网授权售后群答疑，盗卖方式购买资料不提供答疑，感谢理解2024年研赛资料助攻购买链接+说明https://docs.qq.com/doc/p/e03d6bffc00b392932b7dc1fbcf746ef9b086a8a
plt.tight_layout()
plt.show()

# 2. 条形图 (Bar chart) 显示描述性统计结果 (均值, 标准差, 最小值, 最大值等)
plt.figure(figsize=(12, 6))

# 频率的条形图
plt.subplot(1, 2, 1)
freq_stats = [freq_desc['mean'], freq_desc['50%'], freq_desc['std'], freq_desc['min'], freq_desc['max'], freq_desc['25%'], freq_desc['75%']]
plt.bar(['Mean', 'Median', 'Std', 'Min', 'Max', 'Q1', 'Q3'], freq_stats, color='skyblue')
plt.title('Frequency Descriptive Statistics')
plt.ylabel('Value')

# 磁芯损耗的条形图
plt.subplot(1, 2, 2)
core_loss_stats = [core_loss_desc['mean'], core_loss_desc['50%'], core_loss_desc['std'], core_loss_desc['min'], core_loss_desc['max'], core_loss_desc['25%'], core_loss_desc['75%']]
plt.bar(['Mean', 'Median', 'Std', 'Min', 'Max', 'Q1', 'Q3'], core_loss_stats, color='lightcoral')
plt.title('Core Loss Descriptive Statistics')
plt.ylabel('Value')

plt.tight_layout()
plt.show()

# 3. 分布图 (Histogram with KDE) 以及拟合的正态曲线
plt.figure(figsize=(12, 6))#比赛结束前最后一天售后群发布无水印可视化结果+无标注代码【可直接提交】为了防止倒卖， 论文写作过程中遗留数个致命问题，无关代码，该问题解决方式仅在官网授权售后群答疑，盗卖方式购买资料不提供答疑，感谢理解2024年研赛资料助攻购买链接+说明https://docs.qq.com/doc/p/e03d6bffc00b392932b7dc1fbcf746ef9b086a8a

# 频率的分布图
plt.subplot(1, 2, 1)
sns.histplot(frequency, kde=True)
plt.title('Frequency Distribution with KDE')
plt.xlabel('Frequency')
plt.ylabel('Density')

# 磁芯损耗的分布图
plt.subplot(1, 2, 2)
sns.histplot(core_loss, kde=True)
plt.title('Core Loss Distribution with KDE')
plt.xlabel('Core Loss')
plt.ylabel('Density')

plt.tight_layout()
plt.show()
